// components/upload-oss/upload-oss.js
import {getOssConfig} from "../../service/auth";

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    fileList:[]
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 文件超出大小
     */
    overSize() {
      wx.showToast({
        title: '文件不能超过5MB',
        icon: 'none'
      })
    },

    /**
     * 选择完文件触发
     * @param event
     */
    beforeRead(event) {
      const {file, callback} = event.detail;

      if (file.type !== "image") {
        wx.showToast({
          title: '请选择图片类型',
          icon: 'none'
        })
        callback(false)
      } else {
        callback(true)
      }
    },

    /**
     * 读取完文件执行
     * @param event
     */
    afterRead(event) {
      const {file} = event.detail;

      wx.showToast({title: '上传中..'})
      //请求api，获取oss上传的配置
      getOssConfig().then(res => {
        console.log(res);
        const {host, policy, accessid, signature} = res

        const key = 'upload/' + file.url.slice(11)

        //上传图片到oss
        wx.uploadFile({
          url: host,//开发者服务器的URL
          filePath: file.url,
          name: 'file',//必须填file.
          formData: {
            key,//文件名字，保持唯一
            policy,
            OSSAccessKeyId: accessid,
            signature,
            // 'x-oss-security-token': securityToken // 使用STS签名时必传。
          },
          success: (res) => {
            wx.hideLoading()
            if (res.statusCode === 204) {
              wx.showToast({
                title: "上传成功",
                icon: 'success'
              })
              // 如果显示了预览图, 就不能再次点击上传了
              // this.setData({
              //     fileList: [file]
              // })
              // 将文件的key, 传递给父组件, 让父组件做进一步的处理
              this.triggerEvent('getfilekey', key)
            }
          },
          fail: err => {
            wx.hideLoading()
            console.log(err);
          }
        });
      })
    },
    /**
     * 删除图片
     */
    deleteImg() {
      this.setData({
        fileList: []
      })
    }
  }
})
